package ar.com.jendrix.login.web.bean;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.ListDataModel;

import ar.com.jendrix.common.exception.ApplicationException;
import ar.com.jendrix.common.exception.SystemException;
import ar.com.jendrix.common.persistence.entity.service.EntityService;
import ar.com.jendrix.common.web.EntityManagerBaseBean;
import ar.com.jendrix.login.dto.CuentaDTO;
import ar.com.jendrix.login.query.CuentaQuery;
import ar.com.jendrix.login.service.CuentaService;

@ManagedBean
@SessionScoped
@SuppressWarnings("serial")
public final class UsuarioBean extends EntityManagerBaseBean<CuentaDTO> {

	@EJB
	private CuentaService usuarioService;

	private CuentaQuery query;

	public final CuentaQuery getQuery() {
		return query;
	}

	@Override
	protected final CuentaDTO getNewEntityDTO() {
		return new CuentaDTO();
	}

	@Override
	protected final EntityService<CuentaDTO> getEntityService() throws SystemException {
		return usuarioService;
	}

	@Override
	protected final void clear() throws ApplicationException, SystemException {
		super.clear();
		this.query = new CuentaQuery();
		doSearch();
	}

	@Override
	protected final void doSearch() throws ApplicationException, SystemException {
		setEntityList(new ListDataModel<CuentaDTO>(usuarioService.getList()));
	}
}